home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 43 / Amiga Format CD43 (1999)(Future Publishing)(GB)(Track 1 of 2)[!][issue 1999-09].iso / -serious- / graphics / jpegtool / jpegtool.rexx < prev   
OS/2 REXX Batch file  |  1999-06-15  |  21KB  |  704 lines

  1. /*
  2.   $VER: JpegToolGUI.rexx 1.3 (05.06.99) Nils Görs
  3. */
  4.  
  5.  
  6. /* Informationen über das Ausgabefenster      */
  7. LeftBorder   = 10    /*Abstand linker Rand    */
  8. TopBorder    = 300   /*Abstand vom oberen Rand*/
  9. OutPutWidth  = 640   /*Breite des Fensters    */
  10. OutPutHeight = 150   /*Höhe des Fensters      */
  11.  
  12.  
  13. StandardPath = "ram:"
  14. PrefsFile = "Sys:Prefs/Presets/jpegtool.prefs"
  15.  
  16. OPTIONS RESULTS
  17.  
  18. PARSE ARG PubScreen
  19.  
  20. IF PubScreen == "?" THEN DO
  21.  OPTIONS PROMPT "PUBSCREEN/K: "
  22.  PARSE PULL PubScreen
  23. END
  24.  
  25.  
  26. CALL _InitAll
  27.  
  28. /*
  29. ** Beschreibung der Applikation
  30. */
  31. appname     = 'JpegToolGUI'
  32. applongname = 'JpegTool - ©99 by Nils Görs'
  33. appinfo     = 'graphical user interface for JpegTool'
  34. appversion  = '1.3'
  35. apprelease  = '2'
  36. appdate     = '05.06.99'
  37.  
  38. Holder = Prefs.3
  39. IF Prefs.3 = 4 THEN Holder = Prefs.3 * 2
  40. IF Prefs.3 = 3 THEN Holder = Prefs.3 + 1
  41.  
  42. _maintags:
  43. windowtags = WindowID(1),
  44.              PubScreenName(PubScreen),
  45.              WindowBackfillFB,
  46.              WindowTitle(appname appversion),
  47.              QuickHelpOn(HelpBool),
  48.              BeginMenu('Project'),
  49.          MenuItemC('H_QuickHelp',100),
  50.              MenuItem('?_About',101) ItemBarlabel,
  51.              MenuItem('S_Save',103) ItemBarlabel,
  52.              MenuItem('Q_Quit',102),
  53.          BeginMenu('Edit'),
  54.          MenuItem('D_Reset to Defaults',201),
  55.          MenuItem('L_Last Saved',202),
  56.            'HorizGroupA Space VertGroupA Space',
  57.                'LineArray',
  58.             'BeginLine',
  59.                 Text3('_From: ') 'TRAT_ID 1',
  60.                 StringGadget('',1) 'TRAT_Value 255',
  61.                 QuickHelp("specifies the images to convert"),
  62.                 GetFileButton(2),
  63.                 QuickHelp("select a file."),
  64.                 GetDrawerButton(21),
  65.                 QuickHelp("select a directory (including subdirs!) to convert."||NL||"To convert a directory you don't need to give a"||NL||"pattern anymore. A new directory in the destination"||NL||"drawer _won't_ be created!"),
  66.             'EndLine',
  67.         'SpaceS',
  68.             'BeginLine',
  69.                 Text3('_To: ') 'TRAT_ID 3',
  70.                 StringGadget('',3) 'TRAT_Value 255',
  71.                 QuickHelp("specifies the destination file"),
  72.                 GetFileButton(4),
  73.                  GetEntryButton(41),
  74.                  QuickHelp('List of all supported variables/placeholders.'),
  75.             'EndLine',
  76.         'SpaceS',
  77.             'BeginLine',
  78.                 Text3('_Destdatatype: ') 'TRAT_ID 5',
  79.                 StringGadget('',5) 'TRAT_Value 255',
  80.                 QuickHelp("Tells the program to create a datatypes object"NL"from a jpeg stream. To create an ilbm picture specify"NL"picture.datatype. This option requires picture datatype v43"NL"and datatypes.library v45! And, of course, the specified"NL"subclass of picturedt must be v43 compatible and provide an encoder."),
  81.                 GetEntryButton(6),
  82.             'EndLine',
  83.         'Space',
  84.             'BeginLine',
  85.                 Text3("_Quality") 'TRAT_ID 7',
  86.                 SliderGadget(1,100,Prefs.1,7),
  87.                 QuickHelp("quality of the jpeg stream to create."),
  88.                 'Space',
  89.                 Text3(Prefs.1'%') 'TRAT_MinWidth 4 TRAT_ID 77',
  90.             'EndLine',
  91.         'SpaceS',
  92.             'BeginLine',
  93.                 Text3("_Smoothing") 'TRAT_ID 8',
  94.                 SliderGadget(0,100,Prefs.2,8),
  95.                 QuickHelp("smoothing factor of the jpeg stream to create (0 = no smoothing)"),
  96.                 'Space',
  97.                 Text3(Prefs.2'%') 'TRAT_MinWidth 3 TRAT_ID 88',
  98.             'EndLine',
  99.         'SpaceS',
  100.             'BeginLine',
  101.                 Text3("Scalede_nom") 'TRAT_ID 9',
  102.                 SliderGadget(1,4,Prefs.3,9),
  103.                 QuickHelp("scaling denominator when decompressing a jpeg image."NL"Denominators supported are 1 (default), 2, 4 and 8."NL"Eg. if you want to have an image that is halve of"NL"the size of the original one specify 2."),
  104.                 'Space',
  105.                 Text3('1:'Holder) 'TRAT_MinWidth 3 TRAT_ID 99',
  106.             'EndLine',
  107.         'SpaceS',
  108.             'BeginLine',
  109.                 Text3("Scalenum") 'TRAT_ID 13',
  110.                 SliderGadget(1,1,1,13),
  111.                 QuickHelp("scaling numerator when decompressing a jpeg image."NL"The jpeg code only supports a value of 1 (default) currently."),
  112.                 'Space',
  113.                 Text3('1'),
  114.             'EndLine',
  115.         'Space',
  116.         'EndArray',
  117. ,
  118. NamedFrameBox('Options'),
  119.         'LineArray',
  120.             'BeginLine',
  121.                 'SpaceB',
  122.                     Text3("D_ctmethod: ") 'TRAT_ID 14',
  123.                     CycleGadget(DCTMETHOD,Prefs.4-1,14),
  124.                     QuickHelp("allows to specify the dct method used for de-/encoding."NL"ISLOW: integer, slow, more accurate (default)."NL"IFAST: integer, fast, less accurate."NL"FLOAT: float, fast on fast machines, most accurate."),
  125.                 'SpaceB',
  126.                     Text3("_Blocksmoothing: ") 'TRAT_ID 10',
  127.                     CheckBox(10) 'TRAT_Value' Prefs.5,
  128.                     QuickHelp("do block smoothing when decompressing."),
  129.                 'SpaceB',
  130.                     Text3("_Progressive: ") 'TRAT_ID 11',
  131.                     CheckBox(11) 'TRAT_Value' Prefs.6,
  132.                     QuickHelp("create progressive jpeg."),
  133.                 'SpaceB',
  134.                     Text3("Flip_X: ") 'TRAT_ID 18',
  135.                     CheckBox(18) 'TRAT_Value' Prefs.10,
  136.                     QuickHelp("mirror horizontally"),
  137.                 'SpaceB',
  138.             'EndLine',
  139.             'Space',
  140.             'BeginLine',
  141.                 'SpaceB',
  142.                     Text3("Qui_et: ") 'TRAT_ID 12',
  143.                     CheckBox(12) 'TRAT_Value' Prefs.9,
  144.                     QuickHelp("suppresses any message except error messages."),
  145.                 'SpaceB',
  146.                     Text3("_Grayscale: ") 'TRAT_ID 15',
  147.                     CheckBox(15) 'TRAT_Value' Prefs.7,
  148.                     QuickHelp("create grayscale image."),
  149.                 'SpaceB',
  150.                     Text3("F_orce: ") 'TRAT_ID 17',
  151.                     CheckBox(17) 'TRAT_Value' Prefs.8,
  152.                     QuickHelp("overwrite existing file(s)."),
  153.                 'SpaceB',
  154.                     Text3("Flip_Y: ") 'TRAT_ID 19',
  155.                     CheckBox(19) 'TRAT_Value' Prefs.11,
  156.                     QuickHelp("mirror vertically"),
  157.                 'SpaceB',
  158.             'EndLine',
  159.         'Space',
  160.         'EndArray',
  161.         'Space',
  162.         Button("Con_vert",16),
  163.              'Space EndGroup Space EndGroup EndProject'
  164. /*
  165. ** Unterbrechungssignale
  166. */
  167.  
  168. SIGNAL ON break_c
  169. SIGNAL ON failure
  170. SIGNAL ON halt
  171. SIGNAL ON ioerr
  172. SIGNAL ON syntax
  173.  
  174. app = TR_CREATEAPP('TRCA_Name'     '"'appname'"',
  175.                    'TRCA_LongName' '"'applongname'"',
  176.                    'TRCA_Info'     '"'appinfo'"',
  177.                    'TRCA_Version'  '"'appversion'"',
  178.                    'TRCA_Release'  '"'apprelease'"',
  179.                    'TRCA_Date'     '"'appdate'"',
  180.                    'TAG_END')
  181.  
  182. IF app ~= '00000000'x THEN DO
  183.    window = TR_OPENPROJECT(app,windowtags)
  184.    WindowProject=C2D(window) /* zum Locken des Fensters bei About */
  185.    IF window ~= '00000000'x THEN DO
  186.       nummer = 0
  187.  
  188.       DO WHILE nummer = 0
  189.          CALL TR_WAIT(app,'')
  190.  
  191.          DO WHILE TR_HANDLEMSG(app,'event')
  192.  
  193. /******************
  194. *** CLOSEGADGET ***
  195. *******************/
  196.             IF event.trm_class = 'TRMS_CLOSEWINDOW' THEN nummer = -1
  197.  
  198.  
  199.     IF event.trm_class = 'TRMS_ACTION' THEN DO
  200.         SELECT
  201.             WHEN event.trm_id = 16 THEN CALL _Convert
  202.  
  203.             WHEN event.trm_id = 21 THEN DO
  204.                 IF _DirRequest(InDir "Select source path") = 1 THEN DO
  205.                 CALL TR_SETATTRIBUTE(window,1,'TROB_String',Dirname.1)
  206.                 END
  207.             END
  208.  
  209.             WHEN event.trm_id = 2 THEN DO
  210.             infile = TR_GETATTRIBUTE(window,1,'TROB_String')
  211.             IF infile = " " THEN infile = "INFILE"
  212.                 IF _FileRequest(infile "Select source file") = 1 THEN DO
  213.                     Infile = filename.1
  214.                     CALL TR_SETATTRIBUTE(window,1,'TROB_String',Infile)
  215.                 END
  216.             END
  217.             WHEN event.trm_id = 4 THEN DO
  218.             outfile = TR_GETATTRIBUTE(window,3,'TROB_String')
  219.             IF outfile = " " THEN outfile = "OUTFILE"
  220.                 IF _FileRequest(outfile "Select destination file") = 1 THEN DO
  221.                     Outfile = filename.1
  222.                     CALL TR_SETATTRIBUTE(window,3,'TROB_String',Outfile)
  223.                 END
  224.             END
  225.             WHEN event.trm_id = 41 THEN CALL _FileTypes
  226.  
  227.             WHEN event.trm_id = 6 THEN DO
  228.                 NewDatatype = selectdatatypes()
  229.                 IF newdatatype ~= 0 THEN DO
  230.                     laenge=LENGTH(newDatatype)
  231.                     NewDataType=LEFT(NewDataType,Laenge-9)
  232.                     CALL TR_SETATTRIBUTE(window,5,'TROB_String',NewDataType)
  233.                 END
  234.             END
  235.  
  236.             WHEN event.trm_id  = 101 THEN CALL _About
  237.             WHEN event.trm_id  = 102 THEN DO
  238.                         Quit=TR_EasyRequest(app,"Really Quit?",,
  239.                                             "Yes|No","TREZ_Title Quit TREZ_LockProject" WindowProject)
  240.                         IF Quit == 1 THEN nummer=1
  241.                     END
  242.             WHEN event.trm_id = 103 THEN CALL _SavePrefs
  243.             WHEN event.trm_id = 201 THEN CALL _Reset2Defaults
  244.             WHEN event.trm_id = 202 THEN CALL _LastSaved
  245.         OTHERWISE
  246.             NOP
  247.         END
  248.     END
  249.  
  250.     IF event.trm_class = 'TRMS_NEWVALUE' THEN DO
  251.         SELECT
  252.             WHEN event.trm_id = 7 THEN CALL TR_SETATTRIBUTE(window,77,'TRAT_Text',event.trm_data||"%")
  253.             WHEN event.trm_id = 8 THEN CALL TR_SETATTRIBUTE(window,88,'TRAT_Text',event.trm_data||"%")
  254.  
  255.             WHEN event.trm_id = 9 THEN DO
  256.                 IF event.trm_data = 4 THEN event.trm_data = event.trm_data * 2
  257.                 IF event.trm_data = 3 THEN event.trm_data = event.trm_data + 1
  258.                 CALL TR_SETATTRIBUTE(window,99,'TRAT_Text',"1:"||event.trm_data)
  259.             END
  260.             WHEN event.trm_id = 100 THEN DO
  261.                 HelpBool = TR_GETATTRIBUTE(window,100,'TRAT_VALUE')
  262.                 CALL TR_SETATTRIBUTE(window,0,'TRWI_QuickHelp',HelpBool)
  263.             END
  264.         OTHERWISE
  265.             NOP
  266.         END
  267.     END
  268. /* ENDE */
  269.          END
  270.       END
  271.       CALL TR_CLOSEPROJECT(window)
  272.    END
  273.    CALL TR_DELETEAPP(app)
  274. END
  275. EXIT(0)
  276.  
  277. _DirRequest:
  278. PARSE ARG DirPath Title
  279.  
  280. IF Dirpath = "" | Dirpath == "INDIR" | Dirpath = "OUTDIR" THEN Dirpath = standardpath
  281.  
  282.  
  283.             bool = ASL_RequestFile(window,DirName,,
  284.                 "ASLFR_PubScreenName" PubScreen,
  285.                 "ASLFR_InitialDrawer" DirPath,
  286.                 "ASLFR_TitleText" '"'||Title||'"',
  287.                 "ASLFR_DrawersOnly" TRUE)
  288. Args = "ALL"
  289. RETURN(bool)
  290.  
  291. _FileRequest:
  292. PARSE ARG CommandPath title
  293.  
  294. IF commandpath == "INFILE" | commandpath == "OUTFILE" | commandpath = "" THEN commandpath = standardpath
  295.  
  296.     CommandPath = RXTR_PATHPART(CommandPath)
  297.     IF CommandPath = "" THEN commandpath = standardpath
  298.  
  299.             bool = ASL_RequestFile(window,filename,,
  300.                 "ASLFR_PubScreenName" PubScreen,
  301.                 "ASLFR_InitialPattern" PatternList,
  302.                 "ASLFR_DoPatterns" 1,
  303.                 "ASLFR_InitialDrawer" CommandPath,
  304.                 "ASLFR_TitleText" '"'||Title||'"')
  305. RETURN(bool)
  306.  
  307.  
  308. _Convert:
  309.     InFile = TR_GETATTRIBUTE(window,1,'TROB_String')
  310.     OutFile = TR_GETATTRIBUTE(window,3,'TROB_String')
  311.     IF OutFile = "" | InFile = "" THEN RETURN
  312.  
  313.     DestDataType = TR_GETATTRIBUTE(window,5,'TROB_String')
  314.     IF DestDataType ~= "" THEN Args = "DTN="||Destdatatype
  315.  
  316.     CALL _GetValues
  317.  
  318.     IF Prefs.1 ~= 75 THEN Args = Args "Q="||Prefs.1        /* Quality */
  319.  
  320.     IF Prefs.2 ~= 0 THEN Args = Args "S="||Prefs.2        /* Smoothing */
  321.  
  322.     IF Prefs.3 ~= 1 THEN DO
  323.         IF Prefs.3 = 4 THEN Prefs.3 = Prefs.3 * 2
  324.         IF Prefs.3 = 3 THEN Prefs.3 = Prefs.3 + 1
  325.         Args = Args "SD="||Prefs.3        /* Scale */
  326.     END
  327.  
  328.     IF Prefs.4 ~= 1 THEN DO
  329.         wert = Prefs.4
  330.         Args = Args "DCT="||DCTMETHOD.wert        /* Methode */
  331.     END
  332.  
  333.     IF Prefs.5 = 1 THEN Args = Args "BS"            /* Block */
  334.  
  335.     IF Prefs.6 = 1 THEN Args = Args "P"            /* Progressive */
  336.  
  337.     IF Prefs.7 = 1 THEN Args = Args "GS"            /* GrayScale */
  338.     
  339.     IF Prefs.8 = 1 THEN Args = Args "FORCE"            /* Force */
  340.  
  341.     IF Prefs.9 = 1 THEN Args = Args "QUIET"            /* Quiet */
  342.  
  343.     IF Prefs.10 = 1 THEN Args = Args "FX"            /* FLIPX */
  344.     
  345.     IF Prefs.11 = 1 THEN Args = Args "FY"            /* FLIPY */
  346.  
  347.       CALL TR_LOCKPROJECT(window)
  348.     IF Quiet = 1 THEN ADDRESS COMMAND "jpegtool FROM="||InFile "TO="||OutFile Args
  349.     ELSE ADDRESS COMMAND "jpegtool FROM="||InFile "TO="||OutFile Args '<>CON:'LeftBorder'/'TopBorder'/'OutPutWidth'/'OutPutHeight'/converting.../SCREEN' PubScreen'/AUTO/CLOSE'
  350.       CALL TR_UNLOCKPROJECT(window)
  351. Args = ""
  352.     RETURN
  353.  
  354. /*
  355. *** Einstellungen speichern.
  356. */
  357. _SavePrefs:
  358.       CALL TR_LOCKPROJECT(window)
  359.     CALL _GetValues
  360.     IF RXTR_WRITEFILE(Prefsfile,Prefs) = 0 THEN DO
  361.         say "Save error!"
  362.       CALL TR_UNLOCKPROJECT(window)
  363.     RETURN
  364.     END
  365.  
  366.     CALL RXTR_READFILE(PrefsFile,Prefs)
  367.     Prefs2.0 = Prefs.0
  368.         DO i = 1 to Prefs2.0
  369.          Prefs2.i = Prefs.i
  370.     END
  371.       CALL TR_UNLOCKPROJECT(window)
  372. RETURN
  373.  
  374.  
  375. _Reset2Defaults:
  376.       CALL TR_LOCKPROJECT(window)
  377.     CALL _DefaultSettings
  378.     CALL _SetValues
  379.       CALL TR_UNLOCKPROJECT(window)
  380. RETURN
  381.  
  382. _LastSaved:
  383.       CALL TR_LOCKPROJECT(window)
  384.     DO i = 1 to Prefs2.0
  385.         Prefs.i = Prefs2.i
  386.     END
  387.     CALL _SetValues
  388.       CALL TR_UNLOCKPROJECT(window)
  389. RETURN
  390.  
  391.  
  392. _DefaultSettings:
  393.     Prefs.0 = 11
  394.     Prefs.1 = 75    /* Quality */
  395.     Prefs.2 = 0    /* Smoothing */
  396.     Prefs.3 = 1    /* Scale */
  397.     Prefs.4 = 1    /* Methode */
  398.     Prefs.5 = 0    /* Block */
  399.     Prefs.6 = 0    /* Progressive */
  400.     Prefs.7 = 0    /* GrayScale */
  401.     Prefs.8 = 0    /* Force */
  402.     Prefs.9 = 0    /* Quiet */
  403.     Prefs.10 = 0    /* FlipX */
  404.     Prefs.11 = 0    /* FlipY */
  405. RETURN
  406.  
  407. _GetValues:
  408.     Prefs.0 = 11
  409.     Prefs.1 = TR_GETATTRIBUTE(window,7,'TRAT_Value')    /* Quality */
  410.     Prefs.2 = TR_GETATTRIBUTE(window,8,'TRAT_Value')    /* Smoothing */
  411.     Prefs.3 = TR_GETATTRIBUTE(window,9,'TRAT_Value')    /* Scale */
  412.     Prefs.4 = TR_GETATTRIBUTE(window,14,'TRAT_Value')+1    /* Methode */
  413.     Prefs.5 = TR_GETATTRIBUTE(window,10,'TRAT_Value')    /* Block */
  414.     Prefs.6 = TR_GETATTRIBUTE(window,11,'TRAT_Value')    /* Progressive */
  415.     Prefs.7 = TR_GETATTRIBUTE(window,15,'TRAT_Value')    /* GrayScale */
  416.     Prefs.8 = TR_GETATTRIBUTE(window,17,'TRAT_Value')    /* Force */
  417.     Prefs.9 = TR_GETATTRIBUTE(window,12,'TRAT_Value')    /* Quiet */
  418.     Prefs.10 = TR_GETATTRIBUTE(window,18,'TRAT_Value')    /* FlipX */
  419.     Prefs.11 = TR_GETATTRIBUTE(window,19,'TRAT_Value')    /* FlipY */      
  420.     RETURN
  421.  
  422. _SetValues:
  423.     CALL TR_SETATTRIBUTE(window,7,'TRAT_Value',Prefs.1)    /* Quality */
  424.     CALL TR_SETATTRIBUTE(window,77,'TRAT_Text',Prefs.1"%")
  425.     CALL TR_SETATTRIBUTE(window,8,'TRAT_Value',Prefs.2)    /* Quality */
  426.     CALL TR_SETATTRIBUTE(window,88,'TRAT_Text',Prefs.2"%")
  427.     CALL TR_SETATTRIBUTE(window,9,'TRAT_Value',Prefs.3)    /* Scale */
  428.     CALL TR_SETATTRIBUTE(window,99,'TRAT_Text',"1:"Prefs.3)
  429.     CALL TR_SETATTRIBUTE(window,14,'TRAT_Value',Prefs.4-1)    /* Methode */
  430.     CALL TR_SETATTRIBUTE(window,10,'TRAT_Value',Prefs.5)    /* Block */
  431.     CALL TR_SETATTRIBUTE(window,11,'TRAT_Value',Prefs.6)    /* Progressive */
  432.     CALL TR_SETATTRIBUTE(window,15,'TRAT_Value',Prefs.7)    /* GrayScale */
  433.     CALL TR_SETATTRIBUTE(window,17,'TRAT_Value',Prefs.8)    /* Force */
  434.     CALL TR_SETATTRIBUTE(window,12,'TRAT_Value',Prefs.9)    /* Quiet */
  435.     CALL TR_SETATTRIBUTE(window,18,'TRAT_Value',Prefs.10)    /* FlipX */      
  436.     CALL TR_SETATTRIBUTE(window,19,'TRAT_Value',Prefs.11)    /* FlipY */
  437.     RETURN
  438.  
  439. /*
  440. ** Select datatypes
  441. */
  442. selectdatatypes:
  443.  
  444. datatypeswindowtags = ,
  445.    WindowID(2),
  446.    WindowPosition('TRWP_MOUSEPOINTER'),
  447.    WindowTitle('Select datatypes'),
  448.    WindowFlags('TRWF_NOESCCLOSE'),
  449.    PubScreenName(pubscreen),
  450.    'VertGroupA',
  451.       'Space',
  452.       'HorizGroupA',
  453.          'Space',
  454.          ListSS('datatypes',201,0,0),
  455.          'Space',
  456.       'EndGroup',
  457.       'Space',
  458.       'HorizSeparator',
  459.       'Space',
  460.       'HorizGroupA',
  461.          'Space',
  462.          ButtonR('_USE',298),
  463.          ButtonE('_CANCEL',299),
  464.          'Space',
  465.       'EndGroup',
  466.       'Space',
  467.    'EndGroup EndProject'
  468.  
  469.    datatypeswindow = TR_OPENPROJECT(app,datatypeswindowtags)
  470.  
  471.    IF datatypeswindow ~= '00000000'x THEN DO
  472.       CALL TR_LOCKPROJECT(window)
  473.  
  474.       quitdatatypeswindow = FALSE
  475.  
  476.       DO WHILE ~quitdatatypeswindow
  477.          CALL TR_WAIT(app,'')
  478.  
  479.          DO WHILE TR_HANDLEMSG(app,'event')
  480.             IF event.trm_class = 'TRMS_CLOSEWINDOW' THEN DO
  481.                quitdatatypeswindow = TRUE
  482.           selecteddatatypes = FALSE
  483.         END
  484.  
  485.             IF event.trm_class = 'TRMS_ACTION' THEN DO
  486.                IF event.trm_id = 298 THEN DO
  487.                   selecteddatatypes = datatypes.number
  488.                   quitdatatypeswindow = TRUE
  489.                END
  490.  
  491.                IF event.trm_id = 299 THEN DO
  492.                   quitdatatypeswindow = TRUE
  493.           selecteddatatypes = FALSE
  494.         END
  495.             END
  496.  
  497.             IF event.trm_class = 'TRMS_NEWVALUE' & event.trm_id = 201 THEN DO
  498.                number = event.trm_data+1
  499.  
  500.                IF BITAND(D2X(event.trm_qualifier),'0200'x) = '0200'x THEN DO
  501.                   selecteddatatypes = datatypes.number
  502.                   quitdatatypeswindow = TRUE
  503.                END
  504.             END
  505.          END
  506.       END
  507.  
  508.       CALL TR_CLOSEPROJECT(datatypeswindow)
  509.       CALL TR_UNLOCKPROJECT(window)
  510.    END
  511.  
  512.    RETURN(selecteddatatypes)
  513.  
  514. _InitAll:
  515. Args        = ""
  516. NL        = '0a'x
  517. TRUE        = 1
  518. FALSE        = 0
  519. HelpBool    = 0
  520. DCTMETHOD.0 = 3
  521. DCTMETHOD.1 = "ISLOW"
  522. DCTMETHOD.2 = "IFAST"
  523. DCTMETHOD.3 = "FLOAT"
  524.  
  525. PatternList = "#?(.jpg|.iff|.gif|.png)"    /* für Filerequester */
  526.  
  527. FileTypes.0 = 7
  528. FileTypes.1 = "%n (sourcename eg: %20n)"
  529. FileTypes.2 = "%nu (value of internal counter)"
  530. FileTypes.3 = "%w (width of the image.)"
  531. FileTypes.4 = "%h (height ...)"
  532. FileTypes.5 = "%d (depth  ...)"
  533. FileTypes.6 = "%sz (shortcut for %wx%hx%d)"
  534. FileTypes.7 = "%s (suffix without '.')"
  535.  
  536.    /*
  537.    ** Open libs
  538.    */
  539.  
  540.    IF ~SHOW('LIBRARIES','tritonrexx.library') THEN
  541.       IF ~ADDLIB('tritonrexx.library',10,-30,0) THEN
  542.          quit('Cannot open tritonrexx.library!',10)
  543.  
  544.    IF ~SHOW(LIBRARIES,'rexxtricks.library') THEN
  545.       IF ~ADDLIB('rexxtricks.library',9,-30,38) THEN
  546.          quit('Cannot open rexxtricks.library!',10)
  547.  
  548.    IF ~SHOW('LIBRARIES','rexxsupport.library') THEN
  549.       IF ~ADDLIB('rexxsupport.library',9,-30,0) THEN
  550.          quit('Cannot open rexxsupport.library!',10)
  551.  
  552.    /*
  553.    ** Set current dir
  554.    */
  555.  
  556.    PARSE SOURCE . . . script .
  557.    progdir = PATHPART(script)
  558.  
  559.    booll = LENGTH(progdir)
  560.    booli= LASTPOS(":",progdir)
  561.    boolh= LASTPOS("/",progdir)
  562.  
  563.   IF booli <= booll THEN progdir2=progdir||"/"
  564.   IF boolh == 0 THEN progdir2=progdir||"/"
  565.  
  566.    CALL PRAGMA('D',progdir)
  567.  
  568. /* Gibt es einen Parameter für den Bildschirm. Wenn nicht, dann wird
  569.    der Screen auf dem defaultPubScreen geöffnet. */
  570.  
  571. IF PubScreen == "" THEN
  572.    PubScreen = RXTR_GETDEFAULTPUBSCREEN()
  573. CALL RXTR_PUBSCREENTOFRONT(PubScreen)
  574.  
  575. bool = RXTR_GETDIR("sys:classes/DataTypes","#?.datatype",datatypes,'FILES','NAME')
  576. IF bool = 0 THEN datatypes.0 = 0
  577.         ELSE CALL RXTR_QSORT(datatypes,,"NOCASE",,)
  578.  
  579. IF EXISTS(PrefsFile) THEN DO
  580.             CALL RXTR_READFILE(PrefsFile,Prefs)
  581.             Prefs2.0 = Prefs.0
  582.             DO i = 1 to Prefs2.0
  583.              Prefs2.i = Prefs.i
  584.             END
  585.         END
  586.         ELSE CALL _DefaultSettings
  587.  
  588. RETURN
  589.  
  590. /*
  591. *** Fenster für die Dateivariable.
  592. */
  593. _FileTypes:
  594.  
  595. ende2 = 0
  596.  
  597. FileTypesTags = WindowID(3),
  598.         WindowPosition('TRWP_MOUSEPOINTER'),
  599.         WindowBackfillFB,
  600.         WindowTitle('variables & placeholders'),
  601.         WindowFlags('TRWF_NOCLOSEGADGET|TRWF_NOESCCLOSE'),
  602.         QuickHelpOn(HelpBool),
  603.          PubScreenName(Pubscreen),
  604.          'VertGroupA',
  605.           'Space',
  606.           'HorizGroupA',
  607.            'Space',
  608.             ListSel('FileTypes',301,0),
  609.             'Space',
  610.           'EndGroup',
  611.          'Space',
  612.          'HorizSeparator',
  613.          'Space',
  614.           'HorizGroupA',
  615.            'Space',
  616.            ButtonRE("Cancel",302),
  617.            'Space',
  618.          'EndGroup Space EndGroup EndGroup EndProject'
  619. FileTypesProject = TR_OPENPROJECT(app,FileTypestags)
  620.   IF FileTypesProject ~= '00000000'x THEN DO
  621.     CALL TR_LOCKPROJECT(window)
  622.  
  623.       DO WHILE ende2 ~= 1
  624.      DO WHILE TR_HANDLEMSG(app,'event3')
  625.  
  626.         IF event3.trm_class = 'TRMS_ACTION' THEN ende2 = 1 /* Cancel Gadget */
  627.  
  628.          IF event3.trm_class = 'TRMS_NEWVALUE' THEN DO
  629.         DirCheck = TR_GETATTRIBUTE(FileTypesProject,301,'TRAT_Value')+1
  630.         wert = TR_GETATTRIBUTE(FileTypesProject,301,'TRAT_Value')+1
  631.         IF wert <8 THEN lformattemplate=WORD(FileTypes.wert,1)
  632.                 ELSE lformattemplate = FileTypes.wert
  633.         oldTemplate=TR_GETATTRIBUTE(window,3,'TROB_STRING')
  634.         lformattemplate = WORD(lformattemplate,1)
  635.         lformattemplate = oldtemplate||lformattemplate
  636.         CALL TR_SETATTRIBUTE(window,3,'TROB_STRING',lformattemplate)
  637.         ende2 = 1
  638.              END
  639.          END
  640.       END
  641.   END
  642.  
  643.     CALL TR_UNLOCKPROJECT(window)
  644.     CALL TR_CLOSEPROJECT(FileTypesProject)
  645. RETURN
  646.  
  647. /*******************************************************************************
  648. ** Info über das Programm anzeigen
  649. *******************************************************************************/
  650. _About:
  651.    CALL TR_AUTOREQUEST(app,window,PubScreenName(PubScreen),
  652.          BeginRequester('About','TRWP_CENTERDISPLAY'),
  653.             'VertGroupA',
  654.                'Space',
  655.                CenteredText3(appname appversion '('||appdate||') (C) 1999 by Nils Görs <N.Goers@Art-Line.de>'),
  656.                'SpaceS',
  657.                CenteredText(appinfo),
  658.                'Space',
  659.                'HorizSeparator',
  660.                'SpaceS',
  661.                CenteredText3("This application uses:"),
  662.                'Space',
  663.                 CenteredText("'JpegTool' (C) by Stephan Rupprecht <stephan.rupprecht@gmx.de>"),
  664.                'SpaceS',
  665.                'HorizSeparator',
  666.                'Space',
  667.                CenteredText3('This program is using the 'Triton GUI creation system''),
  668.                'SpaceS',
  669.                CenteredText("'Triton' is (C) by Stefan Zeiger <s.zeiger@laren.rhein-main.de>"),
  670.                'Space',
  671.                'HorizSeparator',
  672.                'Space',
  673.                CenteredText3("This program also use 'tritonrexx.library'"),
  674.                'SpaceS',
  675.                'HorizGroupSC',
  676.                   'Space',
  677.                   TextN("'tritonrexx.library' is (C) by Jürgen Kohrmeyer <j_kohrmeyer@wilam.north.de>") 'TRAT_Flags TRTX_NOUNDERSCORE',
  678.                   'Space',
  679.                'EndGroup',
  680.                'Space',
  681.             'EndGroup',
  682.             'BeginRequesterGads',
  683.             CenteredButtonRE("Thanks",10000),
  684.          'EndRequester')
  685.    RETURN
  686.  
  687. /*******************************************************************************
  688. ** Routine, die bei einer Unterbrechung des Scripts aufgerufen wird
  689. *******************************************************************************/
  690.  
  691. break_c:
  692. failure:
  693. halt:
  694. ioerr:
  695. syntax:
  696.    SAY '+++ Fehler' rc 'in Zeile' sigl '-' ERRORTEXT(rc)
  697.    SAY SOURCELINE(sigl)
  698.  
  699.    IF app ~= '00000000'x THEN
  700.       CALL TR_DELETEAPP(app)
  701.  
  702.    EXIT(10)
  703. /*EOS*/
  704.